借助 AWS Lambda,用戶可以在無服務(wù)器函數(shù)中運(yùn)行他們的代碼,而 AWS 負(fù)責(zé)后端管理。此外,Lambda 的“只為使用的東西付費(fèi)”的模式幫助企業(yè)避免為未使用的云資源付費(fèi)。由于 Lambda 抽象化了操作復(fù)雜性并可以降低云成本,因此人氣飆升并成為許多企業(yè)無服務(wù)器架構(gòu)的重要組成部分。下面,我們將仔細(xì)研究 AWS Lambda 的工作原理、它的特性和優(yōu)勢,以及企業(yè)如何保護(hù)他們的 Lambda 工作負(fù)載。
AWS Lambda 是如何工作的?
從用戶的角度來看,AWS Lambda 的工作方式可以概括為四個步驟。
#1。將代碼上傳到 Lambda 或直接在 Lambda 控制臺編輯器中編寫。
開發(fā)人員可以上傳他們已經(jīng)編寫的代碼,或者使用 Lambda 的原生編輯器從頭開始編寫代碼。通常,Lambda 代碼需要是無狀態(tài)的。這意味著它不應(yīng)該依賴于底層基礎(chǔ)設(shè)施、文件系統(tǒng)或子進(jìn)程的狀態(tài)。如果需要有狀態(tài)數(shù)據(jù),可以從 S3 等其他 AWS 服務(wù)調(diào)用它。在此步驟中上傳或編寫的代碼稱為 Lambda 函數(shù)。每個 Lambda 函數(shù)都需要一些基本的元數(shù)據(jù)配置,包括名稱、資源要求和入口點。
#2。配置執(zhí)行代碼的觸發(fā)器。
觸發(fā)器只是對事件的自動響應(yīng)。它們允許 Lambda 函數(shù)作為特定事件或操作的結(jié)果運(yùn)行。例如,對 DynamoDB 數(shù)據(jù)庫的 API 調(diào)用或修改可以充當(dāng) Lambda 函數(shù)的觸發(fā)器。
#3。當(dāng)觸發(fā)事件發(fā)生時,Lambda 會自動運(yùn)行代碼。
配置觸發(fā)器后,每次觸發(fā)時 AWS 都會自動運(yùn)行 Lambda 函數(shù)。企業(yè)無需擔(dān)心底層基礎(chǔ)設(shè)施、操作系統(tǒng)補(bǔ)丁、監(jiān)控或日志記錄。這些功能根據(jù)需要運(yùn)行和擴(kuò)展。
#4。AWS 僅對 Lambda 代碼在運(yùn)行時使用的資源收費(fèi)。
根據(jù) Lambda 資源運(yùn)行的時間向客戶收費(fèi)。Lambda 函數(shù)給定運(yùn)行的持續(xù)時間是從開始到完成(或終止)的時間,四舍五入到最接近的毫秒。
AWS Lambda 的主要功能
AWS Lambda提供了多種功能,使企業(yè)能夠可靠地擴(kuò)展 AWS 云中的工作負(fù)載。一些最重要的 Lambda 功能是:
- 自動縮放。Lambda 根據(jù)傳入請求自動擴(kuò)展。這意味著即使對于高度可突發(fā)的工作負(fù)載,性能也能保持一致。由于 Lambda 函數(shù)是無狀態(tài)的,因此平臺可以快速觸發(fā)它們而無需配置或部署延遲。
- 支持多種語言。Lambda 原生支持 Python、Java、PowerShell、Ruby、C#、Go 和 Node.js。此外,企業(yè)可以使用 Lambda Runtime API 將其他編程語言用于其 Lambda 函數(shù)。
- 自動化管理。基礎(chǔ)架構(gòu)管理、修補(bǔ)、監(jiān)控和日志記錄既復(fù)雜又耗時。Lambda 通過使管理成為底層服務(wù)的一部分來消除這種復(fù)雜性。企業(yè)只需要擔(dān)心代碼和觸發(fā)器。
- 藍(lán)圖。函數(shù)藍(lán)圖使編寫與 AWS 服務(wù)和第 3 方應(yīng)用程序交互的 Lambda 函數(shù)變得更加容易。
- 與其他 AWS 和第 3 方服務(wù)的集成。Lambda 可輕松與各種其他 AWS 服務(wù)集成,包括 RDS 代理、彈性文件系統(tǒng)、S3 和 CloudFront。此外,Lambda 具有足夠的可擴(kuò)展性,可以輕松地與包括身份提供者在內(nèi)的各種其他第 3 方服務(wù)集成。
- 代碼簽名。代碼簽名驗證 Lambda 代碼的真實性。通過簽名的函數(shù)代碼,企業(yè)可以幫助確保只執(zhí)行批準(zhǔn)和未修改的 Lambda 函數(shù)。
AWS Lambda 的主要優(yōu)勢
當(dāng)然,AWS Lambda 的功能只有在提供實際好處時才重要。Lambda 對現(xiàn)代企業(yè)的主要好處包括:
- 真正的無服務(wù)器架構(gòu)。無服務(wù)器架構(gòu)的承諾是企業(yè)可以在不管理服務(wù)器的情況下運(yùn)行工作負(fù)載。Lambda 在全球最大的云基礎(chǔ)設(shè)施提供商上大規(guī)模實現(xiàn)了這一目標(biāo)。企業(yè)無需擔(dān)心補(bǔ)丁、維護(hù)、容錯或可擴(kuò)展性,他們只需關(guān)注自己的工作負(fù)載和代碼。
- 降低成本。現(xiàn)收現(xiàn)付的定價模式意味著企業(yè)無需購買他們??很少使用的計算資源。
- 迭代開發(fā)。無服務(wù)器架構(gòu)支持快速創(chuàng)新和迭代開發(fā)。借助 Lambda,企業(yè)開發(fā)團(tuán)隊可以更快地部署代碼和反饋循環(huán)。
AWS Lambda 和無服務(wù)器安全挑戰(zhàn)
雖然無服務(wù)器架構(gòu)抽象出了許多任務(wù),例如打補(bǔ)丁和操作系統(tǒng)強(qiáng)化,但無服務(wù)器安全性也帶來了一系列獨(dú)特的挑戰(zhàn)。例如,應(yīng)用程序現(xiàn)在被分解成許多 Lambda 函數(shù),這些函數(shù)可能使用來自各種來源的觸發(fā)器。這會產(chǎn)生更多企業(yè)必須保護(hù)的攻擊向量。同樣,隨著功能數(shù)量的增加,創(chuàng)建強(qiáng)制執(zhí)行最小特權(quán)和零信任原則的策略變得更加復(fù)雜。
幸運(yùn)的是,現(xiàn)代云工作負(fù)載保護(hù)平臺 (CWPP)和其他云安全解決方案可以幫助企業(yè)應(yīng)對這些無服務(wù)器安全挑戰(zhàn)。